using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("ChangedCardMgr")]
	public class ChangedCardMgr : MonoClass
	{
		[Attribute38("ChangedCardMgr.TrackedCard")]
		public class TrackedCard : MonoClass
		{
			public int Index => method_11<int>("get_Index", Array.Empty<object>());

			public int DbId => method_11<int>("get_DbId", Array.Empty<object>());

			public int Count => method_11<int>("get_Count", Array.Empty<object>());

			public TrackedCard(IntPtr address, string className)
				: base(address, className)
			{
			}

			public TrackedCard(IntPtr address)
				: this(address, "TrackedCard")
			{
			}

			public new string ToString()
			{
				return method_13("ToString");
			}
		}

		public static int MaxViewCount => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "ChangedCardMgr", "MaxViewCount");

		public bool m_isInitialized => method_2<bool>("m_isInitialized");

		public List<TrackedCard> m_cards => method_3<Class271<TrackedCard>>("m_cards")?.method_25();

		public ChangedCardMgr(IntPtr address, string className)
			: base(address, className)
		{
		}

		public ChangedCardMgr(IntPtr address)
			: this(address, "ChangedCardMgr")
		{
		}

		public static ChangedCardMgr Get()
		{
			return MonoClass.smethod_15<ChangedCardMgr>(TritonHs.MainAssemblyPath, "", "ChangedCardMgr", "Get", Array.Empty<object>());
		}

		public TrackedCard FindCard(int dbId)
		{
			return method_14<TrackedCard>("FindCard", new object[1] { dbId });
		}

		public void AddCard(TrackedCard card)
		{
			method_8("AddCard", card);
		}

		public void Load()
		{
			method_8("Load");
		}

		public void Save()
		{
			method_8("Save");
		}

		public void Initialize()
		{
			method_8("Initialize");
		}

		public bool AllowCard(int index, int dbId)
		{
			return method_11<bool>("AllowCard", new object[2] { index, dbId });
		}
	}
}
